Die Bearbeitung von Kundenanfragen, einschließlich E-Mails, ist ein notwendiger Bestandteil aber es kann schnell überwältigend werden. Mit ein wenig Aufwand können KI-Modelle wie Gemma diese Arbeit erleichtern.
Jedes Unternehmen behandelt Anfragen wie E-Mails etwas anders. Technologien wie generative KI an die Anforderungen für Ihr Unternehmen. Dieses Projekt befasst sich mit dem Problem der Reihenfolge-Extrahierung von E-Mails an eine Bäckerei in strukturierte Daten einem Auftragsabwicklungssystem hinzugefügt. Anhand von 10 bis 20 Beispielen für Anfragen und der gewünschten Ausgabe können Sie ein Gemma-Modell so anpassen, dass es E-Mails von Ihren Kunden verarbeitet, Ihnen hilft, schnell zu antworten, und in Ihre bestehenden Geschäftssysteme eingebunden werden kann. Dieses Projekt wurde als KI-Anwendungsmuster erstellt, das Sie erweitern und anpassen können. von den Gemma-Modellen profitieren können.
Videoübersicht über das Projekt und dessen Erweiterung, einschließlich Erkenntnissen finden Sie in den KI-Assistent für geschäftliche E-Mails Video: Build with Google AI Sie können den Code für dieses Projekt auch im Code-Repository von Gemma Cookbook Andernfalls können Sie mit der folgenden Anleitung beginnen, das Projekt zu erweitern.
Übersicht
In dieser Anleitung erfahren Sie, wie Sie eine mit Gemma, Python und Flask erstellte Anwendung für einen geschäftlichen E-Mail-Assistenten einrichten, ausführen und erweitern. Das Projekt bietet eine einfache Web-Benutzeroberfläche, die Sie an Ihre Anforderungen anpassen können. Die Anwendung erstellt, um Daten aus Kunden-E-Mails in eine Struktur einer fiktiven Bäckerei. Sie können dieses Anwendungsmuster für jede geschäftliche Aufgabe verwenden, bei der Text eingegeben und ausgegeben wird.
Abbildung 1. Benutzeroberfläche des Projekts zur Verarbeitung von E-Mail-Anfragen an die Bäckerei
Hardwareanforderungen
Führen Sie diesen Abstimmungsprozess auf einem Computer mit einer GPU Tensor Processing Unit (TPU) und ausreichend GPU- oder TPU-Arbeitsspeicher für die das vorhandene Modell und die Abstimmungsdaten. Für die Ausführung der Optimierungskonfiguration in diesem Projekt benötigen Sie etwa 16 GB GPU-Speicher, etwa die gleiche Menge an regulärem RAM und mindestens 50 GB Speicherplatz.
Sie können den Abschnitt zur Optimierung des Gemma-Modells in dieser Anleitung in einer Colab-Umgebung mit einer T4-GPU ausführen. Wenn Sie dieses Projekt auf einer VM-Instanz in Google Cloud erstellen, konfigurieren Sie die Instanz gemäß den folgenden Anforderungen:
- GPU-Hardware: Zum Ausführen dieses Projekts ist NVIDIA T4 erforderlich (NVIDIA Stufe 4 oder höher empfohlen)
- Betriebssystem: Wählen Sie eine Option für Deep Learning unter Linux aus, insbesondere Deep Learning VM mit CUDA 12.3 M124 mit vorinstallierten GPU-Softwaretreibern.
- Größe des Bootlaufwerks: Stellen Sie mindestens 50 GB Speicherplatz für Ihre Daten, Modelle und die unterstützende Software bereit.
Projekt einrichten
In dieser Anleitung erfahren Sie, wie Sie dieses Projekt für die Entwicklung vorbereiten. und Tests. Zu den allgemeinen Einrichtungsschritten gehören die Installation der erforderlichen Software, das Klonen des Projekts aus dem Code-Repository, das Festlegen einiger Umgebungsvariablen, die Installation von Python-Bibliotheken und das Testen der Webanwendung.
Installieren und konfigurieren
In diesem Projekt werden Python 3 und virtuelle Umgebungen (venv
) verwendet, um Pakete zu verwalten und die Anwendung auszuführen. Die folgende Installationsanleitung gilt für einen Linux-Hostcomputer.
So installieren Sie die erforderliche Software:
Installieren Sie Python 3 und das virtuelle Umgebungspaket
venv
für Python:sudo apt update sudo apt install git pip python3-venv
Projekt klonen
Laden Sie den Projektcode auf Ihren Entwicklungscomputer herunter. Du brauchst git-Versionsverwaltungssoftware zum Abrufen des Projektquellcode.
So laden Sie den Projektcode herunter:
Klonen Sie das Git-Repository mit dem folgenden Befehl:
git clone https://github.com/google-gemini/gemma-cookbook.git
Optional können Sie Ihr lokales Git-Repository so konfigurieren, dass eine spärliche Überprüfung verwendet wird, sodass nur die Dateien für das Projekt vorhanden sind:
cd gemma-cookbook/ git sparse-checkout set Demos/business-email-assistant/ git sparse-checkout init --cone
Python-Bibliotheken installieren
Installieren Sie die Python-Bibliotheken mit aktivierter venv
virtueller Python-Umgebung, um Python-Pakete und ‑Abhängigkeiten zu verwalten. Aktivieren Sie das
Virtuelle Python-Umgebung vor der Installation von Python-Bibliotheken mit dem pip
. Weitere Informationen zur Verwendung virtueller Python-Umgebungen finden Sie in den
Dokumentation zu Python venv.
So installieren Sie die Python-Bibliotheken:
Rufen Sie in einem Terminalfenster das Verzeichnis
business-email-assistant
auf:cd Demos/business-email-assistant/
Konfigurieren und aktivieren Sie die virtuelle Python-Umgebung (venv) für dieses Projekt:
python3 -m venv venv source venv/bin/activate
Installieren Sie die erforderlichen Python-Bibliotheken für dieses Projekt mit dem Skript
setup_python
:./setup_python.sh
Umgebungsvariablen festlegen
Für die Ausführung dieses Projekts sind einige Umgebungsvariablen erforderlich, darunter ein Kaggle-Nutzername und ein Kaggle API-Token. Sie benötigen eine Kaggle-
und fordern Sie Zugriff auf die Gemma-Modelle an, um sie herunterladen zu können. Für
In diesem Projekt fügen Sie zwei .env
-Konten Ihren Kaggle-Nutzernamen und Ihr Kaggle-API-Token hinzu
-Dateien, die von der Webanwendung und dem Abstimmungsprogramm gelesen werden,
.
So legen Sie die Umgebungsvariablen fest:
- Folgen Sie der Anleitung, um Ihren Kaggle-Nutzernamen und Ihren Token-Schlüssel zu erhalten. in der Kaggle-Dokumentation.
- Folgen Sie der Anleitung Zugriff auf Gemma erhalten, um Zugriff auf das Gemma-Modell zu erhalten. Anleitung für die Gemma-Einrichtung.
- Dateien mit Umgebungsvariablen für das Projekt erstellen, indem Sie eine
.env
-Textdatei an jedem der folgenden Speicherorte in Ihrem Klon des Projekts:email-processing-webapp/.env model-tuning/.env
Nachdem Sie die
.env
-Textdateien erstellt haben, fügen Sie die folgenden Einstellungen für beide hinzu Dateien:KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE> KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
Anwendung ausführen und testen
Nachdem Sie die Installation und Konfiguration des Projekts abgeschlossen haben, starten Sie die Webanwendung, um zu prüfen, ob sie richtig konfiguriert ist. Sie sollten können Sie dies als Ausgangsprüfung tun, bevor Sie das Projekt für Ihren eigenen Gebrauch bearbeiten.
So führen Sie das Projekt aus und testen es:
Wechseln Sie in einem Terminalfenster zum Verzeichnis
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
Führen Sie die Anwendung mit dem Skript
run_app
aus:./run_app.sh
Nachdem die Webanwendung gestartet wurde, wird im Programmcode eine URL aufgeführt, unter der Sie die Anwendung aufrufen und testen können. Normalerweise ist dies:
http://127.0.0.1:5000/
Klicken Sie in der Weboberfläche unter dem ersten Eingabefeld auf die Schaltfläche Daten abrufen, um eine Antwort vom Modell zu generieren.
Die erste Antwort des Modells nach dem Ausführen der Anwendung dauert länger, da bei der ersten Ausführung der Generation die Initialisierungsschritte abgeschlossen werden müssen. Nachfolgende Promptanfragen und -generierungen in einer bereits laufenden Webanwendung werden in kürzerer Zeit abgeschlossen.
Anwendung erweitern
Sobald die Anwendung ausgeführt wird, können Sie sie durch Anpassen des Benutzernamens Benutzeroberfläche und Geschäftslogik, damit sie für die Aufgaben, die für Sie relevant sind, funktioniert. oder Ihrem Unternehmen. Sie können das Verhalten des Gemma-Modells auch über den Anwendungscode ändern, indem Sie die Komponenten des Prompts ändern, die die App an das generative KI-Modell sendet.
Die Anwendung stellt dem Modell Anweisungen zusammen mit den Eingabedaten zur Verfügung. erhalten Sie einen vollständigen Prompt des Modells. Sie können diese Anleitung ändern, um das Verhalten des Modells zu ändern, z. B. indem Sie die Namen der Parameter angeben und die Struktur der zu generierenden JSON-Datei an. Eine einfachere Möglichkeit, das Verhalten eines des Modells darin besteht, zusätzliche Anweisungen oder Hinweise für das Modell Antwort, z. B. die Angabe, dass die generierten Antworten keine Markdown-Formatierung.
So ändern Sie die Promptanleitung:
- Öffnen Sie im Entwicklungsprojekt das
business-email-assistant/email-processing-webapp/app.py
-Codedatei. Fügen Sie im Code von
app.py
der Funktionget_prompt():
Anweisungen für Ergänzungen hinzu:def get_prompt(): return """ Extract the relevant details of this request and return them in JSON code, with no additional markdown formatting:\n"""
In diesem Beispiel wird der Anleitung der Satz „ohne zusätzliche Markdown-Formatierung“ hinzugefügt.
Zusätzliche Prompt-Anweisungen können den generierten Output stark beeinflussen und sind wesentlich einfacher zu implementieren. Sie sollten zuerst diese Methode ausprobieren, um zu sehen, ob Sie mit dem Modell das gewünschte Verhalten erzielen. Prompt-Anweisungen zum Ändern des Verhaltens eines Gemma-Modells haben jedoch Limits. Insbesondere müssen Sie das Gesamtlimit für Eingabetokens des Modells, das für Gemma 2 8.192 Tokens beträgt, beachten. Sie müssen also die detaillierten Promptanweisungen mit der Größe der von Ihnen bereitgestellten neuen Daten in Einklang bringen, damit Sie dieses Limit nicht überschreiten.
Modell abstimmen
Es wird empfohlen, ein Gemma-Modell zu optimieren, auf bestimmte Aufgaben zuverlässiger zu reagieren. Wenn Sie möchten, dass das Modell zum Generieren von JSON mit einer bestimmten Struktur, einschließlich speziell benannter Parameter verwenden, sollten Sie das Modell auf dieses Verhalten abstimmen. Je nach Aufgabe, die das Modell ausführen soll, können Sie mit 10 bis 20 Beispielen eine grundlegende Funktionalität erreichen. In diesem Abschnitt der Anleitung wird erläutert, wie Sie die Feinabstimmung eines Gemma-Modells für eine bestimmte Aufgabe einrichten und ausführen.
In der folgenden Anleitung wird beschrieben, wie Sie die Feinabstimmung in einer VM-Umgebung vornehmen. Sie können die Feinabstimmung aber auch mit dem zugehörigen Colab-Notizbuch für dieses Projekt durchführen.
Hardwareanforderungen
Die Computing-Anforderungen für die Feinabstimmung sind dieselben wie Hardwareanforderungen für den Rest des Projekts. Sie können die Optimierung in einer Colab-Umgebung mit einer T4-GPU-Laufzeit ausführen, wenn Sie die Eingabetokens auf 256 und die Batchgröße auf 1 begrenzen.
Daten vorbereiten
Bevor Sie mit der Optimierung eines Gemma-Modells beginnen, müssen Sie Daten für die Optimierung vorbereiten. Wenn Sie ein Modell für eine bestimmte Aufgabe abstimmen, benötigen Sie eine Reihe von Anfrage- und Antwortbeispielen. Diese Beispiele sollten den Anfragetext ohne Anleitung und den erwarteten Antworttext enthalten. Zunächst sollten Sie ein Dataset mit etwa 10 Beispielen. Diese Beispiele sollten eine Vielzahl von Anfragen und die idealen Antworten darstellen. Achten Sie darauf, dass sich die Anfragen und Antworten nicht wiederholen, da dies dazu führen kann, dass sich die Antworten des Modells wiederholen und nicht angemessen auf Abweichungen bei den Anfragen reagieren. Wenn Sie stellen Sie sicher, dass alle zur Verfügung gestellten entsprechen die Antworten dem gewünschten Datenausgabeformat. Die folgende Tabelle enthält einige Beispieldatensätze aus dem Datensatz dieses Codebeispiels:
Anfrage | Antwort |
---|---|
Hallo Indian Bakery Central,\nhaben Sie zufällig 10 Pendas und 30 Bundi Ladoos auf Lager? Verkaufen Sie auch Vanilleglasur und Kuchen mit Schokoladengeschmack? Ich suche ein Gerät mit einer Größe von 6 Zoll. | { "type": "inquiry", "items": [ { "name": "pendas", "quantity": 10 }, { "name": "bundi ladoos", "quantity": 30 }, { "name": "cake", "filling": null, "frosting": "vanilla", "flavor": "chocolate", "size": "6 in" } ] } |
Ich habe Ihr Unternehmen auf Google Maps gesehen. Verkaufen Sie Jellab und Gulab Jamun? | { "type": "inquiry", "items": [ { "name": "jellabi", "quantity": null }, { "name": "gulab jamun", "quantity": null } ] } |
Tabelle 1. Teilliste des Tuning-Datasets für den E-Mail-Datenextrakteur der Bäckerei.
Daten formatieren und laden
Sie können Ihre Tuning-Daten in einem beliebigen Format speichern, z. B. in Datenbankeinträgen, JSON-Dateien, CSV-Dateien oder Textdateien, solange Sie die Möglichkeit haben, die Einträge mit Python-Code abzurufen. In diesem Projekt werden JSON-Dateien aus einem data
-Verzeichnis in ein Array von Wörterbuchobjekten gelesen.
In diesem Beispiel für ein Drehprogramm wird der Tuning-Datensatz mit der Funktion prepare_tuning_dataset()
in das Modul model-tuning/main.py
geladen:
def prepare_tuning_dataset():
# collect data from JSON files
prompt_data = read_json_files_to_dicts("./data")
...
Wie bereits erwähnt, können Sie das Dataset in einem Format speichern, ist praktisch, solange Sie die Anfragen mit den zugehörigen Antworten und fügen sie zu einer Textzeichenfolge zusammen, die als Abstimmungseintrag verwendet wird.
Abstimmungsdatensätze zusammenstellen
Für die eigentliche Optimierung fasst das Programm jede Anfrage und Antwort in einem String mit den Promptanweisungen und dem Inhalt der Antwort zusammen. Das Tuning-Programm tokenisiert den String dann für die Verwendung durch das Modell. Der Code zum Zusammenstellen eines Tuning-Eintrags befindet sich in der Funktion model-tuning/main.py
des Moduls prepare_tuning_dataset()
:
def prepare_tuning_dataset():
...
# prepare data for tuning
tuning_dataset = []
template = "{instruction}\n{response}"
for prompt in prompt_data:
tuning_dataset.append(template.format(instruction=prompt["prompt"],
response=prompt["response"]))
return tuning_dataset
Bei dieser Funktion werden die Daten als Eingabe verwendet und formatiert, indem ein Zeilenumbruch eingefügt wird. der Anweisung und der Antwort.
Modellgewichte generieren
Sobald die Abstimmungsdaten vorhanden sind und geladen wurden, können Sie die Abstimmung ausführen . Für den Abstimmungsprozess dieser Beispielanwendung wird Keras NLP verwendet um das Modell mit einer Low-Rank-Anpassung (LoRA-Verfahren) um neue Modellgewichtungen zu generieren. Im Vergleich zur vollständigen Tuning-Genauigkeit ist die Verwendung von LoRA deutlich speichereffizienter, da die Änderungen an den Modellgewichten angenähert werden. Anschließend können Sie diese ungefähren Gewichtungen über die vorhandenen um das Verhalten des Modells zu ändern.
So führen Sie den Tuning-Lauf aus und berechnen neue Gewichte:
Wechseln Sie in einem Terminalfenster zum Verzeichnis
model-tuning/
.cd business-email-assistant/model-tuning/
Führen Sie den Abstimmungsprozess mit dem Skript
tune_model
aus:./tune_model.sh
Der Abstimmungsvorgang dauert je nach verfügbarem Computing einige Minuten
Ressourcen. Nach erfolgreichem Abschluss schreibt das Tuning-Programm neue *.h5
-Gewichtsdateien im Verzeichnis model-tuning/weights
im folgenden Format:
gemma2-2b_inquiry_tuned_4_epoch##.lora.h5
Fehlerbehebung
Wenn die Optimierung nicht erfolgreich abgeschlossen wird, gibt es zwei wahrscheinliche Gründe:
- Nicht genügend Arbeitsspeicher oder aufgebrauchte Ressourcen: Diese Fehler treten auf, wenn der
Der Abstimmungsprozess fordert Arbeitsspeicher an, der den verfügbaren GPU-Arbeitsspeicher oder die verfügbare CPU überschreitet
zu speichern. Die Webanwendung darf während des Optimierungsprozesses nicht ausgeführt werden. Wenn Sie die Optimierung auf einem Gerät mit 16 GB GPU-Speicher vornehmen, müssen Sie
token_limit
auf 256 undbatch_size
auf 1 festlegen. - GPU-Treiber nicht installiert oder nicht mit JAX kompatibel: Für die Umwandlung müssen auf dem Rechengerät Hardwaretreiber installiert sein, die mit der Version der JAX-Bibliotheken kompatibel sind. Weitere Informationen finden Sie in der JAX-Installation Dokumentation.
Abgestimmtes Modell bereitstellen
Bei der Optimierung werden anhand der Optimierungsdaten und der in der Optimierungsanwendung festgelegten Gesamtzahl der Epochen mehrere Gewichte generiert. Standardmäßig generiert das Tuning-Programm drei Modellgewichtsdateien, eine für jede Tuning-Epoche. Mit jeder nachfolgenden Tuning-Epoche werden Gewichte generiert, die die Ergebnisse der Tuning-Daten genauer reproduzieren. Die Genauigkeitsraten für jede Epoche finden Sie in der Terminalausgabe des Optimierungsvorgangs:
...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848
Die Genauigkeitsrate sollte relativ hoch sein, etwa 0,80. Sie sollte jedoch nicht zu hoch oder sehr nah an 1,00 liegen, da dies bedeutet, dass die Gewichte die Tuning-Daten fast überanpasst haben. In diesem Fall bei Anfragen, die sich deutlich von die Abstimmungsbeispiele. Standardmäßig werden vom Bereitstellungsskript die Gewichte der Epoche 3 ausgewählt, die in der Regel eine Genauigkeit von etwa 0,80 haben.
So stellen Sie die generierten Gewichte in der Webanwendung bereit:
Gehen Sie in einem Terminalfenster zum Verzeichnis
model-tuning
:cd business-email-assistant/model-tuning/
Führen Sie den Abstimmungsprozess mit dem Skript
deploy_weights
aus:./deploy_weights.sh
Nachdem Sie dieses Script ausgeführt haben, sollte im Verzeichnis email-processing-webapp/weights/
eine neue *.h5
-Datei angezeigt werden.
Neues Modell testen
Nachdem Sie die neuen Gewichte in der Anwendung bereitgestellt haben, können Sie das neu optimierte Modell testen. Dazu müssen Sie die Webanwendung noch einmal ausführen und eine Antwort generieren.
So führen Sie das Projekt aus und testen es:
Wechseln Sie in einem Terminalfenster zum Verzeichnis
email-processing-webapp
:cd business-email-assistant/email-processing-webapp/
Führen Sie die Anwendung mit dem Skript
run_app
aus:./run_app.sh
Nach dem Start der Webanwendung wird im Programmcode eine URL aufgelistet, unter der die Sie durchsuchen und testen können. In der Regel ist diese Adresse:
http://127.0.0.1:5000/
Klicken Sie in der Weboberfläche unter der ersten Eingabe auf die Schaltfläche Daten abrufen. , um eine Antwort vom Modell zu generieren.
Sie haben jetzt ein Gemma-Modell optimiert und in einer Anwendung bereitgestellt. Experimentieren Sie mit und versuchen, die Grenzen der Generierung des abgestimmten Modells zu ermitteln. für Ihre Aufgabe. Wenn Sie Szenarien finden, in denen das Modell nicht gut abschneidet, können Sie einige dieser Anfragen der Liste der Beispieldaten für die Optimierung hinzufügen. Fügen Sie dazu die Anfrage hinzu und geben Sie eine ideale Antwort an. Führen Sie dann die Abstimmung noch einmal aus zu verarbeiten, die neuen Gewichtungen noch einmal bereitzustellen und die Ausgabe zu testen.
Zusätzliche Ressourcen
Weitere Informationen zu diesem Projekt finden Sie im Code-Repository des Gemma-Kochbuchs. Wenn Sie Hilfe bei der Entwicklung der Anwendung benötigen oder andere Entwickler finden Sie in der Google Developers-Community auf Discord Server. Weitere Projekte von „Mit KI von Google entwickeln“ finden Sie in der Videoplaylist.